/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 * extractor2:agentes.AgenteExtractor extractor3:agentes.AgenteExtractor
 */

package comportamientos;

import agentes.AgenteExtractor;
import anotador.DefinitionAnnotator;
import jade.core.behaviours.DataStore;
import jade.core.behaviours.TickerBehaviour;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;

/**
 *
 *  @author hayner Benavides Moreno y Jorge Hernan Londoño Echeverri
 */
public class ComportamientoExtraer extends TickerBehaviour {

    private List<String> lista; // lista de docuemntos
    private AgenteExtractor extractor; // agente que usa el comportamiento para mensajes


    public ComportamientoExtraer(AgenteExtractor a, long period,DataStore store) {
        super(a, period);
        setDataStore(store);
        this.extractor = a;
        lista = extractor.getDocumentos();// toma la referencia de la lista del agente
        
    } 

    @Override
    protected void onTick() {
        
        
        if(lista.size() > 0){
            try{
                //String path = lista.get(0);
                DefinitionAnnotator da = new DefinitionAnnotator();
                
                for(String path:lista){
                    extractor.setSucesoVentana("se ha incluido para la extracción el archivo"+path,Level.FINER);
                    URL u = new URL("file:\\"+path);
                    da.addDocument(u);
                    
                }

                da.execute();

                ArrayList<String> outputAnnotations = new ArrayList<String>();

                outputAnnotations.add("Definition"); // se evan a extraer definiciones

                da.setOutputAnnotations(outputAnnotations);
                da.createHTMLs();
                extractor.setSucesoVentana("se han creado los html de los archivos a extraer",Level.FINER);
                lista.clear();// se limpia la lista apra que la sisguiente vez solo se aplique la extracción a otros
            }
            catch(Exception e){
                System.out.println("ocupado..."); // enc aso de algun error el comportamiento sigue aunque indicara que esta ocupado
            }
        }
    }

}
